#ifndef PushButtonH
#define PushButtonH
//============================================================================
/// \file   PushButton.h
/// \author Uwe Kindler
/// \date   18.10.2022
/// \brief  Declaration of CPushButton
//============================================================================

//============================================================================
//                                   INCLUDES
//============================================================================
#include "ads_globals.h"

#include <QPushButton>

namespace ads
{

/** 
 * ADS特定的带有方向支持的按钮类
 */
class ADS_EXPORT CPushButton : public QPushButton
{
    Q_OBJECT
public:
    enum Orientation {
        Horizontal, // 水平方向
        VerticalTopToBottom, // 从上到下的垂直方向
        VerticalBottomToTop // 从下到上的垂直方向
    };
    
    using QPushButton::QPushButton; // 继承QPushButton的构造函数
    
    /**
     * 返回当前方向
     */
    virtual QSize sizeHint() const override;
    
    /**
     * 返回按钮的当前方向
     */
    Orientation buttonOrientation() const;
    
    /**
     * 设置按钮的方向
     */
    void setButtonOrientation(Orientation orientation);
    
protected:
    virtual void paintEvent(QPaintEvent *event) override;
    
private:
    Orientation m_Orientation = Horizontal; // 默认方向为水平方向
};

} // namespace ads

//---------------------------------------------------------------------------
#endif // PushButtonH

